package com.dongzili.postgresql.common.mybatisplus;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

/**
 * 自动填充 createTime 和 modifyTime
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    // 插入时自动填充 createTime 和 modifyTime（仅当字段存在时）
    @Override
    public void insertFill(MetaObject metaObject) {
        // 判断是否存在 createTime 字段，存在则填充
        if (metaObject.hasGetter("createTime")) {
            this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        }
        // 判断是否存在 modifyTime 字段，存在则填充
        if (metaObject.hasGetter("modifyTime")) {
            this.strictInsertFill(metaObject, "modifyTime", LocalDateTime.class, LocalDateTime.now());
        }
    }

    // 更新时自动填充 modifyTime（仅当字段存在时）
    @Override
    public void updateFill(MetaObject metaObject) {
        // 判断是否存在 modifyTime 字段，存在则刷新
        if (metaObject.hasGetter("modifyTime")) {
            this.strictUpdateFill(metaObject, "modifyTime", LocalDateTime.class, LocalDateTime.now());
        }
    }
}